﻿using System;
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo
{
    class Program
    {


        static void Main(string[] args)
        {
            a();
            b();
            c();
            d();
            e();
            f();
            g();
            
            i();
            j();
            k();
            

        }
//        打印杨辉三角形（要求打印10行），如下所示：（使用二维数组）
//1
//1    1
//1    2    1
//1    3    3   1
//1    4    6   4    1
//1    5    10  10   5   1
        private static void k()
        {
            int[,] a = new int[6, 6] { {1,1,1,1,1,1 }, { 1, 1, 1, 1, 1, 1 },{ 1, 2, 1, 1, 1,1 }, { 1, 3, 3, 1, 1, 1 }, { 1, 4, 6, 4, 1, 1 }, { 1, 5, 10, 10, 5, 1 } };
            for (int i = 0; i <= 6; i++)
            {
                for (int j = 0; j <=i; j++)
                {
                    Console.Write(a[i,j]);
                }
                Console.WriteLine();
            }
        }



        //用户输入正方形边长，用* 打印出空心正方形。
        private static void j()
        {
            Console.WriteLine("请输入空心正方形边长：");
            int a = int.Parse(Console.ReadLine());
            for (int i = 1; i < a + 1; i++)
            {
                for (int j = 1; j < a + 1; j++)
                {
                    if (i == 1 || i == a || j == 1 || j == a)

                        Console.Write("*");

                    else

                        Console.Write(" ");


                }
                Console.WriteLine();
            }
        }

        //如果一个数组保存元素是有序的（从大到小），
        //向这个数组中插入一个数，使得插入后的数组元素仍然保持有序


        private static void i()
        {
            int[] arr = { 89, 77, 45, 33, 22 };
            int[] newarr = new int[arr.Length + 1];
            Console.WriteLine("请输入一个数：");
            int n = int.Parse(Console.ReadLine());
            int index = -1;
            for (int i = 0; i < newarr.Length; i++)
            {
                if (n > arr[i])
                {
                    index = i;
                    break;
                }

            }
            if (index != -1)
            {
                for (int i = 0; i < newarr.Length; i++)
                {
                    if (i < index)
                    {
                        newarr[i] = arr[i];
                    }

                    if (i == index)
                    {
                        newarr[i] = n;
                    }
                    if (i > index)
                    {
                        newarr[i] = arr[i - 1];
                    }
                }
            }
            else
            {
                for (int i = 0; i < newarr.Length; i++)
                {
                    if (i == newarr.Length - 1)
                    {

                        newarr[i] = n;
                    }
                    else
                    {

                        newarr[i] = arr[i];
                    }
                }

            }
            for (int i = 0; i < newarr.Length; i++)
            {
                Console.WriteLine(newarr[i]);
            }


        }



        private static void g()
        {
            Console.WriteLine("请用户输入正方形的边长：");
            int n = int.Parse(Console.ReadLine());

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();

            }
        }

        private static void f()
        {
            for (int i = 1; i < 10; i++)
            {
                for (int j = 1; j <= i; j++)

                {
                    Console.Write(i + "*" + j + "=" + i * j + " ");

                }
                Console.WriteLine();
            }
        }
        //实现查找数组元素索引的功能。定义一个数组，然后控制台输入
        //要查找的元素，返回输入值在数组中最后一次出现的位置。若是
        //找不到，请打印找不到。

        private static void e()
        {
          int[] b={13,443,22,45};
            Console.WriteLine("请输入要查找的元素:");
            int a = int.Parse(Console.ReadLine());
            int index = -1;
            for (int i = 0; i <b.Length; i++)
            {
                if (a ==b[i]) {
                    index = -1;
                    break;
                
                
                }

            }
            if (index != -1)
            {
                Console.WriteLine("元素" + b[index] + "最后一次出现的位置在" + (index + 1) + "的位置");
            }
            else {
                Console.WriteLine("找不到");
            }

        }

        //定义一个方法，实现一维数组的排序功能，从大到小排序。(不要用Array类的方法)
        private static void d()
        {
            int[] arr = { 12, 33, 11, 56, 55, 9 };
            int temp = 0;
            for (int i = 0; i < arr.Length - 1; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[i] < arr[j])
                    {
                        temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            Console.WriteLine("排序后：");
            foreach (int i in arr)
            {
                Console.Write(i + " ");


            }
            Console.WriteLine();

        }

        //在 Main 方法中创建一个 double 类型的数组，并在该数组中存入 5 名学生的考试成绩(控制台输入)，
        //计算总成绩和平均成绩。要求使用foreach语句实现该功能，
        private static void c()
        {
            double[] vs =new double[5];
            Console.WriteLine("请输入五个学生的成绩");
            for (int i = 0; i < vs.Length; i++)
            {
                 vs[i] = Double.Parse(Console.ReadLine());
            }
            double  sum = 0;
            
            for (int i = 0; i < vs.Length; i++)
            {
                sum =sum+vs[i];

            }
            foreach (char c in vs)
            {
                Console.WriteLine("总成绩为："+sum);
                break;

            }
            double vag = sum / 5;
            Console.WriteLine("平均成绩为"+ vag);
            Console.WriteLine();
        }

        //输入一行字符串，分别统计出其中英文字母、数字、空格的个数。
        private static void b()
        {
            String s = "aff jkg27";
            int Egcount = 0;
            int figurecount = 0;
            int blankcount = 0;
            foreach (char c in s)
            {
                if (char.IsLetter(c))
                {
                    Egcount++;
                }
                else if (char.IsDigit(c))
                {

                    figurecount++;
                }
                else if (char.IsWhiteSpace(c))
                {
                    blankcount++;
                }
            }
            Console.WriteLine("英文字母有{0}个,数字有{1}个,空格有{2}个", Egcount, figurecount, blankcount);
        }
        //在 Main 方法中创建一个字符串类型的数组，并存入 5 个值，然后将数组中下标是偶数的元素输出。
        private static void a()
        {
            int[] arr = { 1, 2, 3, 4, 5 };
            Console.WriteLine(arr[2]);
            Console.WriteLine(arr[4]);
        }
    }
}
